- Docs »
- 基础 »
- 版本 »
- 从0.12到0.13
-
版本从0.12迁移到0.13
架构变化
- NW.js作为Chrome内部应用运行 . 所有chrome.*平台的APIs和特性都可以在NW应用中使用 . URL默认使用的协议由
file://
更改为chrome-extension://
. chrome-extension://
协议更换0.12版本中的app://
.
- NW中所有的AIPs , 包括
require()
从nw.gui
转移到nw
对象中 . 然而 , NW提供一个内部封装包兼容0.12版本应用 . 0.14及后续版本中同样可以使用nw.gui
, 但建议使用nw
对象 .
- 0.12及以前版本中 , Node.js环境放入后台页的DOM环境中 , 为了不同窗口之间能够共享 . 不同的是 , 0.13版本中 , Node环境中能够访问所有DOM特性以及chrome.*平台APIs .
- 默认独立环境模式中需要打开后台页开发工具进行调试 , 参考开发工具与调试 .
- 0.12版本中 , 应用通过JS或者HTML进入 , 但Chrome内部应用首窗被认为通过后台运行JS启动 . 如果在package.json中通过"main"字段指定加载首页 , NW将使用默认JS打开首窗 .
- NW.js在混合环境模式下运行(使用
--mixed-context
参数启动NW.js) , nw.*
映射window.*
. 该模式下不能在框架(frames)和窗体(windows)之间分享变量 . 如果过于依赖分享变量的特性将不能开启混合环境模式 .
Node.js变化
- Node.js最后构建在6.x版本 . 检查NPM模块 , 确认支持Node.js 6.x版本 , 特别是本地模块 . 本地模块列表迁移到最新版本 , 可以使用NaN 2 .
- process.versions[
nw
]提供获取NW版本信息 , process.versions[node-webkit
]将不再使用 .
API变化
构造方式
- 不同的构造方式有不同的APIs设置以及不同的能力 . 参考构造方式可以选择正确的方式构造 .
快捷键
- Mac OS X系统中不能将Ctrl映射到⌘快捷键 . 0.13版本中支持通过平台支持命令修改 . 这样需要了解系统并正确的注册以及使用快捷键 . 参考快捷键
菜单
- 0.12版本中 , Mac系统默认的菜单栏中的菜单项包括:
app-name
, Edit
and Window
.
- Mac系统中 , 修改应用菜单名需要修改
nwjs.app/Contents/Resources/en.lproj/InfoPlist.strings
而不是nwjs.app/Contents/Info.plist
. 参考自定义菜单 .
配置格式
single-instance
弃用并且一直为true
. 应用不能使用多例 , 除非通过--user-data-dir
使用不同的用户数据目录 . 首例可以使用open事件通知运行第二例 .
toolbar
弃用并且一直为false
. 传统工具条将不能使用 , 包括重加载按钮 , 地址栏以及工具按钮 . 应用可以使用win.reload()
和win.reloadDev()
模拟重加载按钮功能 .
no-edit-menu
弃用 .
snapshot
弃用 . 应用可以使用win.evalNWBin()
代替 .
node-remote
的格式更改为通过Chrome扩展中match patterns数组使用 .
package.json
或者Window.open()
参数中 , 窗口相关参数always-on-top
, visible-on-all-workspaces
, new-instance
, inject-js-start
和inject-js-end
重命名为always_on_top
, visible_on_all_workspaces
, new_instance
, inject_js_start
和inject_js_end
- 命令行参数
--data-path
更换为--user-data-dir
.
Window 窗口
Screen 屏幕
id
通过added
, orderchanged
, namechanged
, thumbnailchanged
注册后进行获取 , 传入getUserMedia
前 , 可以使用registerStream(id)
获取注册的id . 参考 概要 .
已知问题
- Linux系统中 ,
nw.Window.open()
参数中resizable
将不起作用 .
nw.Window
的reloadDev()
和isDevToolsOpen()
不支持 .
App.quit()
不会触发nw.Window
事件closed
.
nw.Window
的devtools-closed
事件不支持 .
as_desktop
参数不支持 .
package.json
中的webkit.{plugin|java|page-cache}
参数不支持 , 插件默认开启 .
<iframe>
的<iframe>
属性不支持 .
MenuItem
的tooltip
属性不支持 .
nw.App.setCrashDumpDir()
不支持 , 崩溃机制相关信息保存到app-data-path/Crash Reports
目录下 .